#ifndef VECTEUR_H
#define VECTEUR_H

class Vecteur
{
private:
	float x;
	float y;
	float z;
	float w;

public:
	Vecteur();
	Vecteur(float x, float y, float z);
	Vecteur(Point p1, Point p2);
	Vecteur(float c[]);
	Vecteur(Vecteur const& v);
	~Vecteur();

	Vecteur& operator=(Vecteur const& v);
	Vecteur operator*(Matrice *m);
	float getX();
	float getY();
	float getZ();
	void setX(float x);
	void setY(float y);
	void setZ(float z);

	float produitScalaire(Vecteur v);
	Vecteur produitVectoriel(Vecteur v);

	Vecteur addition(Vecteur v);
	Vecteur operator+(Vecteur v);
	Vecteur operator*(Vecteur v);
	Vecteur operator*(float f);
	Vecteur soustraction(Vecteur v);
	Vecteur operator-(Vecteur v);
	Vecteur multiplication(float a);
	float longueur();
	Vecteur normalisation();
	void normalize();
	float angle(Vecteur v);
	void inverse();
	Vecteur median(Vecteur v);
	void setVecteur(Point p1, Point p2);
	std::ostream& display(std::ostream &out); 
	Vecteur rotation(float a);
	Vecteur operator*(Matrice mat);
};

std::ostream& operator<<(std::ostream &out,Vecteur v);

#endif